Spring单例模式和多例模式以及懒加载 |
您所在的位置:网站首页 › spring bean默认是懒加载吗 › Spring单例模式和多例模式以及懒加载 |
Spring默认是单例模式,单例模式就意味着getBean()取得的bean都是唯一的,多例模式是每次getbean都返回新的一个对象。 @Component @Scope("prototype") public class X { public X(){ System.out.println("X Constructor"); } } public static void main(String[] args) throws InterruptedException { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(); ac.register(Appconfig.class); ac.refresh(); System.out.println(ac.getBean("x")); System.out.println(ac.getBean("x")); }控制台打印 X Constructor test.X@41ee392b X Constructor test.X@1e67a849证明所取得的bean是不同的对象 单例模式要想懒加载必须在相应类上加@Lazy注解,多例模式先天是懒加载的。 在AbstractApplicationContext的refresh内的this.finishBeanFactoryInitialization(beanFactory);上加断点,调整成单例模式(默认就是单例),点下一步,发现已经类X已经实例化,加上@Lazy注解发现在 System.out.println(ac.getBean("x"));时才实例化。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |